package com.rbac.modules.system.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.rbac.modules.system.dto.DeptDTO;
import com.rbac.modules.system.dto.DeptQuery;
import com.rbac.modules.system.entity.SysDept;

import java.util.List;

public interface SysDeptService extends IService<SysDept> {
    
    /**
     * 分页查询部门列表
     */
    Page<SysDept> page(DeptQuery query);
    
    /**
     * 创建部门
     */
    void create(DeptDTO deptDTO);
    
    /**
     * 更新部门
     */
    void update(DeptDTO deptDTO);
    
    /**
     * 删除部门
     */
    void delete(Long[] ids);
    
    /**
     * 获取部门树形结构
     */
    List<SysDept> tree();
    
    /**
     * 获取子部门ID列表
     */
    List<Long> getChildrenIds(Long parentId);
    
    /**
     * 获取所有子部门ID列表（包括子部门的子部门）
     */
    List<Long> getAllChildrenIds(Long parentId);
    
    /**
     * 检查部门名称是否存在
     */
    boolean checkDeptNameExists(String deptName, Long parentId, Long excludeId);
} 